/*
 * Created by SharpDevelop.
 * user: Robertux
 * Date: 18/03/2008
 * Time: 23:04
 * 
 * 
 */

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using DataLayer;
using Inventador;

namespace WinApp
{
	/// <summary>
	/// Description of frmMarcas.
	/// </summary>
	public partial class frmMarcas : Form
	{
		private List<MarcaProducto> marcas;
		private BaseDatos bdatos;
		private List<Producto> productos;
		
		public frmMarcas()
		{
			InitializeComponent();
		}
		
		public frmMarcas(BaseDatos bdatosExterna): this()
		{
			this.bdatos = bdatosExterna;
			this.marcas = MarcaProducto.GetList(this.bdatos, "");
			this.RellenarGrid();
			this.gridManager1.AutoGenerarColumnas();
			if(this.marcas.Count <= 1)
				this.button4.Enabled = false;
		}
		
		public void RellenarGrid()
		{
			this.grdMarcas.Rows.Clear();
			foreach(MarcaProducto marca in this.marcas)
			{
				this.productos = Producto.GetList(this.bdatos, "marca = " + marca.Id.ToString());
				string listaProds = "";
				for(int i = 0; i<this.productos.Count; i++)
				{
					listaProds += (listaProds == ""? this.productos[i].fkTipoProducto.Nombre: ", " + this.productos[i].fkTipoProducto.Nombre);
					if(i == 4)
					{
						listaProds += "...";
						break;
					}
				}
				this.grdMarcas.Rows.Add(new object[]{marca.Id, marca.Nombre, listaProds});
			}
		}
				
		void Button1Click(object sender, EventArgs e)
		{
			this.Close();
		}
		
		void Button4Click(object sender, EventArgs e)
		{
			if(MessageBox.Show("Esta seguro que desea borrar la marca seleccionada?", "Confirmacion", MessageBoxButtons.YesNo) == DialogResult.Yes)
			{
				if(this.grdMarcas.SelectedRows[0].Cells[2].Value.ToString() != "")
				{
					if(MessageBox.Show("La Marca seleccionada posee Productos asociados a ella. Estos se asociaran a una Marca generica. Desea continuar?", "Confirmaicon", MessageBoxButtons.YesNo) == DialogResult.Yes)
					{
						bdatos.Conectar();
						bdatos.EjecutarOperacion("update Producto set marca = 0 where marca = " + this.marcas[this.grdMarcas.SelectedRows[0].Index].Id.ToString());
						bdatos.Desconectar();
						this.marcas[this.grdMarcas.SelectedRows[0].Index].Delete(this.bdatos);
						this.marcas.RemoveAt(this.grdMarcas.SelectedRows[0].Index);
						this.RellenarGrid();
						if(this.marcas.Count <= 1)
							this.button4.Enabled = false;
					}
				}
				else
				{
					this.marcas[this.grdMarcas.SelectedRows[0].Index].Delete(this.bdatos);
						this.marcas.RemoveAt(this.grdMarcas.SelectedRows[0].Index);
						this.RellenarGrid();
						if(this.marcas.Count <= 1)
							this.button4.Enabled = false;
				}
			}
		}
		
		void Button3Click(object sender, EventArgs e)
		{
			frmAddEditValue frmedit = new frmAddEditValue("Escriba el nuevo nombre para la marca", this.marcas[this.grdMarcas.SelectedRows[0].Index].Nombre);
			frmedit.ShowDialog(this);
			if(frmedit.Result == DialogResult.OK)
			{
				this.marcas[this.grdMarcas.SelectedRows[0].Index].Nombre = frmedit.Value;
				this.marcas[this.grdMarcas.SelectedRows[0].Index].Update(this.bdatos);
				this.RellenarGrid();
			}
		}
		
		void Button2Click(object sender, EventArgs e)
		{
			frmAddEditValue frmadd = new frmAddEditValue("Escriba el nuevo nombre para la marca", "");
			frmadd.ShowDialog(this);
			if(frmadd.Result == DialogResult.OK)
			{
				int maxId = MarcaProducto.GetMaxId(this.bdatos);
				MarcaProducto nuevaMarca = new MarcaProducto(maxId + 1, frmadd.Value);
				nuevaMarca.Insert(this.bdatos);
				this.marcas = MarcaProducto.GetList(this.bdatos, "");
				this.RellenarGrid();
			}
		}
		
		void GrdMarcasSelectionChanged(object sender, EventArgs e)
		{
			if(this.grdMarcas.Rows.Count > 0)
			{
				if(this.grdMarcas.SelectedRows.Count > 0)
				{
					if(this.grdMarcas.SelectedRows[0].Cells[0].Value.ToString() == "0")
					{
						this.button3.Enabled = false;
						this.button4.Enabled = false;
					}
					else
					{
						this.button3.Enabled = true;
						this.button4.Enabled = true;
					}
				}
			}
		}
	}
}
